/**
 * @file tsk_misc.h
 * @brief tskp库 - 通用类型与宏定义头文件
 * @details
 * 本文件定义了tskp任务调参库的通用类型、标准库引用、配置参数引用等。
 * 包含任务参数结构体、基础类型定义、常用头文件引用等，适用于嵌入式、实时系统下的任务调度与参数管理。
 *
 * 作者：小傲（个人开发）
 * 邮箱：2655640770@qq.com
 * 版权声明：开源公开，欢迎建议与反馈
 * 日期：2025-09-11
 *
 * 重要说明：
 * tsk_Parsed_t 结构体说明：
 *   - T_struct：用户传入的参数指针，实际使用时需用户自行强制类型转换后使用。
 *   - com    ：解析出来的命令参数（仅开启命令功能时有效）。
 *   - data   ：解析出来的参数数组，类型为float。
 *   - id     ：触发本次任务的ID。
 */

#ifndef _TSK_MISC_H_
#define _TSK_MISC_H_

#include"tsk_tskp_config.h"  //配置参数

#ifdef _TSK_TSKP_

#include <stdio.h>          //printf
#include <stdlib.h>         //atoi atof
#include <string.h>         //memset memcpy strlen
#include <stdbool.h>        //bool
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #include <stdint.h>
#else
    typedef unsigned char      uint8_t;
    typedef unsigned short     uint16_t;
    typedef unsigned long      uint32_t;
    typedef signed char        int8_t;
    typedef signed short       int16_t;
    typedef signed long        int32_t;
#endif

typedef struct {
    void *T_struct;                         // 用户传入的参数指针，需强制类型转换后使用
    #if TSK_CMD_SWITCH
        char com[TSK_MAX_STRING_LEN];       // 解析出来的命令参数
    #endif
    volatile float data[TSK_MAX_DATALEN];   // 解析出来的参数，float类型
    uint8_t id;                             // 触发本次任务的ID
}tsk_Parsed_t;                              // 任务参数结构体

#endif 

#endif // !_TSK_MISC_H_
